Tudo o mesmo

Melon Usk tentou executar os dois programas a seguir, mas está confuso sobre o comportamento que observa. Enquanto o primeiro programa termina com a e b com valores diferentes, o segundo termina com a e b com o mesmo valor.

# programa 1
a = 7
b = a
a = a + 1
print(a)
print(b)
# programa 2
a = [1,2,3]
b = a
a.append(9)
print(a)
print(b)

Tente agora:

O que explica essas diferenças? Use um diagrama de ambiente para explicar.

Mostrar/Esconder

Após a execução das duas primeiras linhas, os dois programas apresentam uma estrutura semelhante, conforme mostrado a seguir (programa 2 à esquerda e programa 1 à direita). Observe que em cada programa, tanto a quanto b estão associados ao mesmo objeto na memória.

A diferença aparece na linha seguinte. No programa 2, executamos a.append(9), que modifica a lista na memória sem alterar onde a ou b apontam. No programa 1, executamos a = a + 1, que cria um novo objeto na memória (8) e associa o nome a a esse resultado; mas b não mudou em nada: